/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package battleship_admin;

import battleship_server.Manager;
import battleship_server.SocketConnection;
import java.util.ArrayList;

/**
 *
 * @author omar
 */
public class AdminThread extends Thread {

    private SocketConnection socket = null;

    public AdminThread(SocketConnection s) {
        this.socket = s;
    }
    public boolean bandera = true;
    int juegosActivos = 0;
    ArrayList<String> p = new ArrayList<String>();
    ArrayList<String> temp = new ArrayList<String>();
    /* Los que se desconectaron */
    ArrayList<String> desc = new ArrayList<String>();
    ArrayList<String> todos = new ArrayList<String>();

    @Override
    public void run() {
        while (bandera) {
            try {
                //checamos nuevas conexiones.
                if (p.size() != Manager.allPlayers()) {
                    todos.clear();
                    desc.clear();
                    for (SocketConnection pp : Manager.onlineUsers) {
                        if (!p.contains(pp.getPlayer().getUser())) {
                            temp.add(pp.getPlayer().getUser());
                        }
                        todos.add(pp.getPlayer().getUser());
                    }
                    if (!temp.isEmpty()) {
                        socket.getOut().println("Player-Change");
                        for (String s : temp) {
                            socket.getOut().println(s);
                            p.add(s);
                        }
                        temp.clear();
                        socket.getOut().println("END");
                        socket.getOut().flush();
                   }
                    boolean cambios = false;
                    ArrayList<String> seh = new ArrayList<String>();
                    for (String s : p) {
                        if (!todos.contains(s)) {
                            desc.add(s);
                            seh.add(s);
                            cambios = true;
                        }
                    }

                    if(cambios){
                        for(String s : seh){
                            p.remove(s);
                        }
                    }
                    if (cambios) {
                        System.out.println("Se desconecto alguien.");
                        socket.getOut().println("Player-Gone");
                        for (String s : desc) {
                            socket.getOut().println(s);
                            System.out.println(s);
                        }
                        socket.getOut().println("END");
                    }
                }
                //checamos nuevos juegos.
                if (juegosActivos != Manager.activeGames()) {
                    juegosActivos = Manager.activeGames();
                    socket.getOut().println("ActiveG-Change");
                    socket.getOut().println("" + juegosActivos);
                }
                this.sleep(10000);
            } catch (Exception ex) {
            }
        }
    }
}
